package vip.zhaotao.utils;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;

import java.io.File;
import java.io.IOException;
import java.io.Writer;

/**
 * Freemarker工具类
 */
public class FreeMarkerUtils {

    /**
     * freemarker模板处理
     *
     * @param dataModel             数据
     * @param out                   输出流
     * @param templateFileDirectory 模板文件目录
     * @param templateFileName      模板文件名称
     * @param encodingName          编码名称
     * @throws IOException
     * @throws TemplateException
     */
    public static void templateProcess(Object dataModel,
                                       Writer out,
                                       String templateFileDirectory,
                                       String templateFileName,
                                       String encodingName) throws IOException, TemplateException {
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_27);
        if (encodingName != null) {
            cfg.setDefaultEncoding(encodingName);
        }
        cfg.setDirectoryForTemplateLoading(new File(templateFileDirectory));
        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);

        Template template = cfg.getTemplate(templateFileName);
        template.process(dataModel, out);
        out.flush();
    }
}
